↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
REV_IN_AG(.(X, Xs), Ys) → U1_AG(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AG(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
REV_IN_AA(.(X, Xs), Ys) → U1_AA(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AA(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_AAA(Zs, .(X, []), Ys)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U3_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AG(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_AAG(Zs, .(X, []), Ys)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U3_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
REV_IN_AG(.(X, Xs), Ys) → U1_AG(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AG(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
REV_IN_AA(.(X, Xs), Ys) → U1_AA(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AA(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_AAA(Zs, .(X, []), Ys)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U3_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AG(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_AAG(Zs, .(X, []), Ys)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U3_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAG(.(X, Zs)) → APP_IN_AAG(Zs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAA → APP_IN_AAA
APP_IN_AAA → APP_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
REV_IN_AA → REV_IN_AA
REV_IN_AA → REV_IN_AA
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
REV_IN_AG(.(X, Xs), Ys) → U1_AG(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AG(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
REV_IN_AA(.(X, Xs), Ys) → U1_AA(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AA(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_AAA(Zs, .(X, []), Ys)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U3_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AG(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_AAG(Zs, .(X, []), Ys)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U3_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
REV_IN_AG(.(X, Xs), Ys) → U1_AG(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AG(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
REV_IN_AA(.(X, Xs), Ys) → U1_AA(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AA(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_AAA(Zs, .(X, []), Ys)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U3_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AG(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_AAG(Zs, .(X, []), Ys)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U3_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
APP_IN_AAG(.(X, Zs)) → APP_IN_AAG(Zs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
APP_IN_AAA → APP_IN_AAA
APP_IN_AAA → APP_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U3_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
REV_IN_AA → REV_IN_AA
REV_IN_AA → REV_IN_AA